// 封装 axios
import axios from 'axios'
import { message } from 'antd'
import { customHistory } from './history'
import { logout } from '@/store/actions'
import store from '@/store'
const http = axios.create({
  baseURL: 'http://geek.itheima.net/v1_0',
})

//
// 请求拦截器处理
http.interceptors.request.use((config) => {
  console.log(config, 11)
  // 获取token
  const { login: token } = store.getState()
  // 除了登录请求以外，其他的请求都必须同一加上token
  if (!config.url.startsWith('/authorizations')) {
    config.headers.Authorization = `Bearer ${token}`
  }

  return config
})
// 响应拦截器
http.interceptors.response.use(undefined, (error) => {
  // 响应失败时，会执行此处的回调函数
  if (!error.response) {
    message.error('网络暂时繁忙，请重新登录')
    return Promise.reject(error)
  }
  // 如果出现了401状态码
  // console.log(error, 22)
  if (error.response.status === 401) {
    message.error(error.response.data?.message, 1.5, () => {
      // 删除token
      store.dispatch(logout())
      // 跳转到登录页面，并携带当前要访问的页面，下次再登录进来就可以继续访问当前的页面
      customHistory.push('/login', {
        from: customHistory.location.pathname,
      })
    })
  }
  return Promise.reject(error)
})
// 按需导出
export { http }
